<?php

namespace App\Admin\Forms;


use App\Models\Used\WxUsedGood;
use App\Wen\Utils\Settings;
use App\Wen\Utils\ShopUtils;
use App\Wen\Utils\UserUtils;
use App\Models\WxRefund;
use App\Models\Shop\WxShopOrder;
use App\Models\Shop\WxShopOrderGoods;
use Carbon\Carbon;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
use Illuminate\Support\Facades\DB;


class OrderGoodsForms extends Form implements LazyRenderable
{
    use LazyWidget;
    /**
     * 处理表单请求.
     *
     * @param array $input
     *
     * @return mixed
     */
    public function handle(array $input)
    {
        $id = $input['id'];
        $old_state = WxShopOrderGoods::where('id', $this->payload["id"])->value('state');
        $state = $input['state'];
        // [0=>'正常', 2 => '① 退货退款中（协商退货）', 1 => '② 退款中（待退款）', 3=> '③ 已退款（立即打款，售后完结）']

        if($old_state == 3){
            return $this->response()
                ->warning('当前订单商品已完结，已不可更改！')
                ->refresh();
        }

        if(in_array($old_state, [0, 1, 2])){
            if($state == 3){
                if(ShopUtils::order_good_refund($id)){
                    return $this->response()
                        ->success('处理成功')
                        ->refresh();
                }else{
                    return $this->response()
                        ->error('处理失败')
                        ->refresh();
                }
            }else{
                WxShopOrderGoods::where('id', $id)->update([
                    'state' => $state,
                ]);
                return $this->response()
                    ->success('处理成功')
                    ->refresh();
            }
        }
    }

    /**
     * 构建表单.
     */
    public function form()
    {
        if($this->payload["goods_type"] == 6){
            $this->hidden('id')->value($this->payload["id"]);
            $state = WxShopOrderGoods::where('id', $this->payload["id"])->value('state');
            $this->radio('state', "状态")->options([0=>'正常', 2 => '① 卖家协商退货中（协商退货）', 1 => '② 买家申请退款（待退款）', 3=> '③ 已退款（原路退款，售后完结）'])
                ->help('不知道这是在处理啥，<a href="https://img.mini.minisns.cn/images/shop/tuihuotuikuan.jpg" target="_blank">请点击查看</a>'.'<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">1、正常情况下，退款或者退货，是由买家和卖家共同完成，管理员不用掺和，这个地方是强制给买家退款，请谨慎选择<br><br>2、当用户购买闲置商品后，申请退货退款时，订单立即变更为“①退货退款中”状态，此时卖家联系买家，卖家在收到货物后，卖家可以选择“同意退款”，若未收到退回的货物，卖家可以拒绝本次退款。<br><br>3、更新状态为"③已退款"后，系统会原路退回支付费用，同时售后状态变更为“已处理”，本次售后完结。<br><br>
4、系统不具备货物追回能力，若买家申请退货退款，需要卖家自己协商退货，卖家收到货物后，由卖家选择同意“退款”。</div>')
                ->default($state);
        }else{
            $this->hidden('id')->value($this->payload["id"]);
            $state = WxShopOrderGoods::where('id', $this->payload["id"])->value('state');
            $this->radio('state', "状态")->options([0=>'正常', 2 => '① 退货退款中（协商退货）', 1 => '② 退款中（待退款）', 3=> '③ 已退款（原路退款，售后完结）'])
                ->help('不知道这是在处理啥，<a href="https://img.mini.minisns.cn/images/shop/tuihuotuikuan.jpg" target="_blank">请点击查看</a>'.'<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">1、当用户申请退货退款时，订单立即变更为“退货退款中”状态，此时你应该联系用户退货，在收到货物后，可以选择“②退款中”或“③已退款”。<br><br>2、当该订单还未发货且不是虚拟物品时，用户申请退款则会立即进入“退款中”状态<br><br>3、更新状态为"③已退款"后，系统会原路退回支付费用，同时售后状态变更为“已处理”，本次售后完结。<br>
<br>4、更新状态为“③已退款”时，如果该次<b>购物车订单</b>只包含这一个商品，则该次<b>购物车订单</b>状态会变更为“已退款 已退货”<br><br>5、系统不具备货物追回能力，若用户申请退货退款，需要你自己协商退货，收到货物后，才需要在这选择“②退款中”或"③已退款"。</div>')
                ->default($state);
        }

    }

}
